package com.jinmdz.fmis.api.api.model.transport;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinmdz.fmis.api.api.model.common.BusinessCharges;
import com.jinmdz.fmis.common.annotation.AnValidate;
import com.jinmdz.fmis.common.constant.EValidateCode;
import com.jinmdz.fmis.core.annotation.AnDict;
import com.jinmdz.fmis.core.base.BaseBean;
import com.jinmdz.fmis.core.constant.EDictCode;
import com.jinmdz.fmis.dao.model.transport.TransportCodeText;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

/**
 * 接运请求响应数据
 *
 * @author LiCongLu
 * @date 2020-02-13 8:51
 */
@ApiModel(value = "接运请求响应数据", description = "接运请求响应数据")
public class TransportTaskData extends BaseBean {
    /**
     * 主键
     */
    @AnValidate(name = "主键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "主键", name = "id", position = 1)
    private Integer id;

    /**
     * 业务编码
     */
    @AnValidate(name = "业务编码", required = true)
    @ApiModelProperty(value = "业务编码", name = "businessCode", position = 2)
    private String businessCode;

    /**
     * 预约时间
     */
    @AnValidate(name = "预约时间", required = true)
    @ApiModelProperty(value = "预约时间", name = "appointmentTime", example = "2020-02-07 13:57", position = 3)
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm)
    private Date appointmentTime;

    /**
     * 车辆类型编码
     */
    @AnValidate(name = "车辆类型编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "车辆类型编码", name = "transportCarTypeCode", position = 4)
    private Integer transportCarTypeCode;

    /**
     * 车辆类型
     */
    @AnValidate(name = "车辆类型")
    @ApiModelProperty(value = "车辆类型", name = "transportCarType", position = 5)
    @AnDict(dict = EDictCode.TRANSPORT_CAR_TYPE, ref = "transportCarTypeCode")
    private String transportCarType;

    /**
     * 接运车辆外键
     */
    @AnValidate(name = "接运车辆外键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "接运车辆外键", name = "transportCarId", position = 6)
    private Integer transportCarId;

    /**
     * 车牌号
     */
    @AnValidate(name = "车牌号")
    @ApiModelProperty(value = "车牌号", name = "transportCarNo", position = 7)
    private String transportCarNo;

    /**
     * 司机账号外键
     */
    @AnValidate(name = "司机账号外键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "司机账号外键", name = "driverUserId", position = 8)
    private Integer driverUserId;

    /**
     * 司机姓名
     */
    @AnValidate(name = "司机姓名")
    @ApiModelProperty(value = "司机姓名", name = "driverUserName", position = 9)
    private String driverUserName;

    /**
     * 司机电话
     */
    @AnValidate(name = "司机电话")
    @ApiModelProperty(value = "司机电话", name = "driverUserTelephone", position = 10)
    private String driverUserTelephone;

    /**
     * 抬尸工
     */
    @AnValidate(name = "抬尸工")
    @ApiModelProperty(value = "抬尸工", name = "transportTaskPorter", position = 11)
    private ArrayList<Integer> transportTaskPorter;

    /**
     * 车辆用途编码
     */
    @AnValidate(name = "车辆用途编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "车辆用途编码", name = "transportPurposeCode", position = 12)
    private Integer transportPurposeCode;

    /**
     * 车辆用途
     */
    @AnValidate(name = "车辆用途")
    @ApiModelProperty(value = "车辆用途", name = "transportPurpose", position = 13)
    @AnDict(dict = EDictCode.TRANSPORT_CAR_USE, ref = "transportPurposeCode")
    private String transportPurpose;

    /**
     * 接尸地点
     */
    @AnValidate(name = "接尸地点", required = true)
    @ApiModelProperty(value = "接尸地点", name = "transportPlace", position = 14)
    private String transportPlace;

    /**
     * 接运联系人
     */
    @AnValidate(name = "接运联系人")
    @ApiModelProperty(value = "接运联系人", name = "transportLinkman", position = 15)
    private String transportLinkman;

    /**
     * 接运联系电话
     */
    @AnValidate(name = "接运联系电话")
    @ApiModelProperty(value = "接运联系电话", name = "transportTelephone", position = 16)
    private String transportTelephone;

    /**
     * 接运状态
     */
    @AnValidate(name = "接运状态", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "接运状态", name = "processStateCode", position = 17)
    private Integer processStateCode;

    /**
     * 接运状态
     */
    @AnValidate(name = "接运状态")
    @ApiModelProperty(value = "接运状态", name = "processState", position = 18)
    @AnDict(dict = EDictCode.TRANSPORT_CAR_TASK_STATUS, ref = "processStateCode")
    private String processState;

    /**
     * 出车时间
     */
    @AnValidate(name = "出车时间")
    @ApiModelProperty(value = "出车时间", name = "departureTime", example = "2020-02-07 13:57", position = 19)
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm)
    private Date departureTime;

    /**
     * 回车时间
     */
    @AnValidate(name = "回车时间")
    @ApiModelProperty(value = "回车时间", name = "returnTime", example = "2020-02-07 13:57", position = 17)
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm)
    private Date returnTime;

    /**
     * 行驶里程
     */
    @AnValidate(name = "行驶里程", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "行驶里程", name = "transportDistance", position = 18)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal transportDistance;

    /**
     * 规则数量
     */
    @AnValidate(name = "规则数量", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "规则数量", name = "ruleNumber", position = 19)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal ruleNumber;

    /**
     * 规则单位
     */
    @AnValidate(name = "规则单位", required = true)
    @ApiModelProperty(value = "规则单位", name = "ruleUnit", position = 20)
    private String ruleUnit;

    /**
     * 规则编码
     */
    @AnValidate(name = "规则编码")
    @ApiModelProperty(value = "规则编码", name = "ruleCode", position = 21)
    private String ruleCode;

    /**
     * 规则备注
     */
    @AnValidate(name = "规则备注")
    @ApiModelProperty(value = "规则备注", name = "ruleRemark", position = 22)
    private String ruleRemark;

    /**
     * 备注
     */
    @AnValidate(name = "备注")
    @ApiModelProperty(value = "备注", name = "remark", position = 23)
    private String remark;

    /**
     * 数据版本号
     */
    @AnValidate(name = "数据版本号")
    @ApiModelProperty(value = "数据版本号", name = "version", position = 24)
    private Long version;

    /**
     * 业务费用与物品服务
     */
    @AnValidate(name = "业务费用与物品服务", required = true)
    @ApiModelProperty(value = "业务费用与物品服务", name = "charges", position = 25)
    private BusinessCharges charges;

    /**
     * 抬尸工集合类
     */
    @AnValidate(name = "抬尸工")
    @ApiModelProperty(value = "抬尸工", name = "transportTaskPorterList", position = 29)
    private ArrayList<TransportCodeText> transportTaskPorterList;

    public Integer getId() {
        return id;
    }

    public TransportTaskData setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getBusinessCode() {
        return businessCode;
    }

    public TransportTaskData setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
        return this;
    }

    public Date getAppointmentTime() {
        return appointmentTime;
    }

    public TransportTaskData setAppointmentTime(Date appointmentTime) {
        this.appointmentTime = appointmentTime;
        return this;
    }

    public Integer getTransportCarTypeCode() {
        return transportCarTypeCode;
    }

    public TransportTaskData setTransportCarTypeCode(Integer transportCarTypeCode) {
        this.transportCarTypeCode = transportCarTypeCode;
        return this;
    }

    public String getTransportCarType() {
        return transportCarType;
    }

    public TransportTaskData setTransportCarType(String transportCarType) {
        this.transportCarType = transportCarType;
        return this;
    }

    public Integer getTransportCarId() {
        return transportCarId;
    }

    public TransportTaskData setTransportCarId(Integer transportCarId) {
        this.transportCarId = transportCarId;
        return this;
    }

    public String getTransportCarNo() {
        return transportCarNo;
    }

    public TransportTaskData setTransportCarNo(String transportCarNo) {
        this.transportCarNo = transportCarNo;
        return this;
    }

    public Integer getDriverUserId() {
        return driverUserId;
    }

    public TransportTaskData setDriverUserId(Integer driverUserId) {
        this.driverUserId = driverUserId;
        return this;
    }

    public String getDriverUserName() {
        return driverUserName;
    }

    public TransportTaskData setDriverUserName(String driverUserName) {
        this.driverUserName = driverUserName;
        return this;
    }

    public String getDriverUserTelephone() {
        return driverUserTelephone;
    }

    public TransportTaskData setDriverUserTelephone(String driverUserTelephone) {
        this.driverUserTelephone = driverUserTelephone;
        return this;
    }

    public ArrayList<Integer> getTransportTaskPorter() {
        return transportTaskPorter;
    }

    public TransportTaskData setTransportTaskPorter(ArrayList<Integer> transportTaskPorter) {
        this.transportTaskPorter = transportTaskPorter;
        return this;
    }

    public Integer getTransportPurposeCode() {
        return transportPurposeCode;
    }

    public TransportTaskData setTransportPurposeCode(Integer transportPurposeCode) {
        this.transportPurposeCode = transportPurposeCode;
        return this;
    }

    public String getTransportPurpose() {
        return transportPurpose;
    }

    public TransportTaskData setTransportPurpose(String transportPurpose) {
        this.transportPurpose = transportPurpose;
        return this;
    }

    public String getTransportPlace() {
        return transportPlace;
    }

    public TransportTaskData setTransportPlace(String transportPlace) {
        this.transportPlace = transportPlace;
        return this;
    }

    public String getTransportLinkman() {
        return transportLinkman;
    }

    public TransportTaskData setTransportLinkman(String transportLinkman) {
        this.transportLinkman = transportLinkman;
        return this;
    }

    public String getTransportTelephone() {
        return transportTelephone;
    }

    public TransportTaskData setTransportTelephone(String transportTelephone) {
        this.transportTelephone = transportTelephone;
        return this;
    }

    public Integer getProcessStateCode() {
        return processStateCode;
    }

    public TransportTaskData setProcessStateCode(Integer processStateCode) {
        this.processStateCode = processStateCode;
        return this;
    }

    public String getProcessState() {
        return processState;
    }

    public TransportTaskData setProcessState(String processState) {
        this.processState = processState;
        return this;
    }

    public Date getDepartureTime() {
        return departureTime;
    }

    public TransportTaskData setDepartureTime(Date departureTime) {
        this.departureTime = departureTime;
        return this;
    }

    public Date getReturnTime() {
        return returnTime;
    }

    public TransportTaskData setReturnTime(Date returnTime) {
        this.returnTime = returnTime;
        return this;
    }

    public BigDecimal getTransportDistance() {
        return transportDistance;
    }

    public TransportTaskData setTransportDistance(BigDecimal transportDistance) {
        this.transportDistance = transportDistance;
        return this;
    }

    public BigDecimal getRuleNumber() {
        return ruleNumber;
    }

    public TransportTaskData setRuleNumber(BigDecimal ruleNumber) {
        this.ruleNumber = ruleNumber;
        return this;
    }

    public String getRuleUnit() {
        return ruleUnit;
    }

    public TransportTaskData setRuleUnit(String ruleUnit) {
        this.ruleUnit = ruleUnit;
        return this;
    }

    public String getRuleCode() {
        return ruleCode;
    }

    public TransportTaskData setRuleCode(String ruleCode) {
        this.ruleCode = ruleCode;
        return this;
    }

    public String getRuleRemark() {
        return ruleRemark;
    }

    public TransportTaskData setRuleRemark(String ruleRemark) {
        this.ruleRemark = ruleRemark;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public TransportTaskData setRemark(String remark) {
        this.remark = remark;
        return this;
    }

    public Long getVersion() {
        return version;
    }

    public TransportTaskData setVersion(Long version) {
        this.version = version;
        return this;
    }

    public BusinessCharges getCharges() {
        return charges;
    }

    public TransportTaskData setCharges(BusinessCharges charges) {
        this.charges = charges;
        return this;
    }

    public ArrayList<TransportCodeText> getTransportTaskPorterList() {
        return transportTaskPorterList;
    }

    public TransportTaskData setTransportTaskPorterList(ArrayList<TransportCodeText> transportTaskPorterList) {
        this.transportTaskPorterList = transportTaskPorterList;
        return this;
    }
}
